home *** CD-ROM | disk | FTP | other *** search
/ Nibble Magazine / nib01.dsk / SPACE MAZE.bas < prev    next >
BASIC Source File  |  2023-02-26  |  7KB  |  87 lines

  1. 3  REM  *************************
  2. 4  REM  ** SPACE MAZE          **
  3. 5  REM  ** MICRO-SPARC         **
  4. 6  REM  ** P.O. BOX 325        **
  5. 7  REM  ** LINCOLN MASS 01773  **
  6. 8  REM  ** COPYRIGHT C 1980    **
  7. 9  REM  *************************
  8. 12  REM  THE FOLLOWING SUBROUTINE GOES INTO MEMORY BLOCK HEX $30E (782), THE TONES RESPOND TO POKE 0 TO 255
  9. 13  REM  PITCH= POKE780,P   DURATION=POKE781,D
  10. 15  POKE 782,173: POKE 783,48: POKE 784,192: POKE 785,136: POKE 786,208: POKE 787,5: POKE 788,206: POKE 789,13: POKE 790,3
  11. 20  POKE 791,240: POKE 792,9: POKE 793,202: POKE 794,208: POKE 795,245: POKE 796,174: POKE 797,12: POKE 798,3: POKE 799,76
  12. 25  POKE 800,14: POKE 801,3: POKE 802,96
  13. 27  CALL  -936
  14. 30  VTAB 7: INVERSE : HTAB 10: PRINT "** SPACE MAZE **": VTAB 23: HTAB 4: PRINT "COPYRIGHT 1980..MICRO-SPARC, INC.": NORMAL 
  15. 31  VTAB 9: PRINT "YOU WILL PILOT A SPACE CRUISER THRU THE": PRINT "STAR MAZE TO REACH THE PRIZED DILITHIUM": PRINT "CRYSTALS AT THE CENTER OF THE MAZE": INVERSE : PRINT 
  16. 32  PRINT "BE CAREFUL! IN THE HARD VERSION OF THE": PRINT "GAME YOUR SHIP IS PULLED BY HOSTILE  ": PRINT "MAGNETIC FORCES.. SO TAKE CARE       "
  17. 33  PRINT "NOT TO CRASH!!!!!!!!!!!!!!!!!!!!!!!!!!!"
  18. 34  NORMAL : PRINT "DO YOU WANT YOUR SHIP SIGNAL SOUNDS? ": INPUT "TYPE Y OR N";NS$: INPUT "EASY OR HARD GAME? TYPE 'E' OR 'H'";HD$
  19. 38  GOSUB 500: PRINT "DO YOU WANT STARWARS MUSIC EACH GAME?": INPUT "Y OR N ";M$
  20. 40  HGR : GOSUB 2000
  21. 45  IF M$ < >"N"  THEN  GOSUB 500
  22. 50  GOTO 200
  23. 97  REM  THE FOLLOWING SUBROUTINE TESTS WHETHER X AND Y ARE CONTAINED IN THE SERIES OF 11 RECTANGLES MAKING UP THE MAZE
  24. 98  REM  IF X AND Y ARE SENSED, THEN Z IS SET THE NUMBER OF THE RECTANGLE.  AT THE END OF THE TEST, Z IS TESTED. IF Z IS GREATER THAN
  25. 99  REM  ZERO IT MEANS X AND Y ARE IN BOUNDS. IF Z=0 THEN NO X AND Y HAVE BEEN SENSED IN BOUNDS AND THE PROGRAM GOES TO THE CRASH SUBRTNE.
  26. 100  IF (X > = 10  AND X < = 80)  AND (Y > = 80  AND Y < = 100)  THEN Z = 1
  27. 110  IF (X > = 60  AND X < = 100)  AND (Y > = 100  AND Y < = 120)  THEN Z = 2
  28. 120  IF (X > = 80  AND X < = 100)  AND (Y > = 120  AND Y < = 158)  THEN Z = 3
  29. 125  IF (X > = 100  AND X < = 140)  AND (Y > = 140  AND Y < = 158)  THEN Z = 4
  30. 130  IF (X > = 120  AND X < = 180)  AND (Y > = 120  AND Y < = 140)  THEN Z = 5
  31. 135  IF (X > = 160  AND X < = 220)  AND (Y > = 140  AND Y < = 158)  THEN Z = 6
  32. 137  IF (X > = 200  AND X < = 220)  AND (Y > = 110  AND Y < = 140)  THEN Z = 6
  33. 138  IF (X > = 220  AND X < = 265)  AND (Y > = 110  AND Y < = 130)  THEN Z = 6
  34. 139  IF (X > = 245  AND X < = 265)  AND (Y > = 40  AND Y < = 110)  THEN Z = 6
  35. 140  IF (X > = 215  AND X < = 245)  AND (Y > = 40  AND Y < = 60)  THEN Z = 6
  36. 141  IF (X > = 215  AND X < = 235)  AND (Y > = 60  AND Y < = 100)  THEN Z = 6
  37. 142  IF (X > = 180  AND X < = 235)  AND (Y > = 80  AND Y < = 100)  THEN Z = 6
  38. 145  IF (X > = 180  AND X < = 200)  AND (Y > = 60  AND Y < = 100)  THEN Z = 8
  39. 150  IF (X > = 140  AND X < = 180)  AND (Y > = 60  AND Y < = 80)  THEN Z = 9
  40. 160  IF (X > = 100  AND X < = 160)  AND (Y > = 40  AND Y < = 60)  THEN Z = 10
  41. 162  IF (X > = 100  AND X < = 120)  AND (Y > = 60  AND Y < = 80)  THEN Z = 11
  42. 165  IF (X > = 106  AND X < = 114)  AND (Y > = 66  AND Y < = 74)  THEN 3000: REM  BRANCH TO WIN
  43. 170  IF Z < = 0  THEN 4000: REM  BRANCH TO CRASH...NO FLAGS WERE SET TO INDICATE PRESENCE IN THE MAZE...THEREFORE MUST BE OUTSIDE.
  44. 175 Z = 0: RETURN : REM  RESET Z EACH TEST
  45. 200 X = 15:Y = 90:HV = 0:VV = 0:TM = 600:XO = 15:YO = 90: CALL  -936
  46. 210  IF  PDL(0) > = 165  THEN HV = HV +1
  47. 220  IF  PDL(0) < = 90  THEN HV = HV -1
  48. 230  IF  PDL(1) > = 165  THEN VV = VV +1
  49. 231  IF HD$ = "E"  THEN 240
  50. 232  IF  RND(1) <.05  THEN HV = HV +1
  51. 233  IF  RND(1) >.95  THEN VV = VV +1
  52. 240  IF  PDL(1) < = 90  THEN VV = VV -1
  53. 242 X = XO +HV:Y = YO +VV
  54. 243 TM = TM -1: VTAB 21: PRINT  TAB( 10)"FUEL LEFT= ";TM: IF TM <100  THEN  VTAB 21: CALL  -868: PRINT  TAB( 10)"FUEL LEFT= ";TM
  55. 245  VTAB 22: CALL  -868: PRINT "HORIZ =";HV;: PRINT  TAB( 25)"VERTICAL =";VV
  56. 260  HCOLOR= 3: HPLOT X,Y: IF PT = 0  THEN 267
  57. 265  VTAB 23: PRINT  TAB( 4)"PREVIOUS RECORD SCORE IS: ";PT
  58. 267  IF TM < = 0  THEN  CALL  -936: FLASH : PRINT  TAB( 10)"OUT OF FUEL";: PRINT  TAB( 10)" ": GOSUB 4000
  59. 270  IF X = XO  AND Y = YO  THEN 300
  60. 280  HCOLOR= 0: HPLOT XO,YO: IF NS$ = "N"  THEN 300
  61. 285  POKE 780,150: POKE 781,10: CALL 782
  62. 300 XO = X:YO = Y: GOSUB 100: GOTO 210
  63. 498  REM  THE 500 SUBRTNE SETS UP THE MUSIC. M1=PITCH,  M2=DURATION.  700 PLAYS IT.
  64. 500 M1 = 230:M2 = 75: GOSUB 700:M1 = 126:M2 = 250: GOSUB 700:M1 = 170:M2 = 250: GOSUB 700:M1 = 190:M2 = 75: GOSUB 700
  65. 510 M1 = 203:M2 = 75: GOSUB 700:M1 = 230:M2 = 75: GOSUB 700:M1 = 126:M2 = 250: GOSUB 700:M1 = 170:M2 = 250: GOSUB 700
  66. 515 M1 = 190:M2 = 100: GOSUB 700:M1 = 203:M2 = 100: GOSUB 700:M1 = 190:M2 = 100: GOSUB 700:M1 = 230:M2 = 250: GOSUB 700: RETURN 
  67. 700  POKE 780,M1: POKE 781,M2: CALL 782: RETURN 
  68. 2000  HCOLOR= 3: HPLOT 0,0 TO 279,0 TO 279,159 TO 0,159 TO 0,0
  69. 2001  HPLOT 70,10 TO 60,10 TO 60,20 TO 70,20 TO 70,30 TO 60,30: HPLOT 75,30 TO 75,10 TO 85,10 TO 85,20 TO 75,20: HPLOT 90,30 TO 90,10 TO 100,10 TO 100,30: HPLOT 90,20 TO 100,20
  70. 2002  HPLOT 115,10 TO 105,10 TO 105,30 TO 115,30: HPLOT 130,10 TO 120,10 TO 120,30 TO 130,30: HPLOT 120,20 TO 125,20: HPLOT 140,30 TO 140,10 TO 146,20 TO 152,10 TO 152,30
  71. 2003  HPLOT 158,30 TO 158,10 TO 168,10 TO 168,30: HPLOT 158,20 TO 168,20: HPLOT 173,10 TO 183,10 TO 173,30 TO 183,30: HPLOT 198,10 TO 188,10 TO 188,30 TO 198,30: HPLOT 188,20 TO 193,20
  72. 2005  HPLOT 10,80 TO 80,80 TO 80,100 TO 100,100 TO 100,140 TO 120,140 TO 120,120 TO 180,120
  73. 2010  HPLOT 180,120 TO 180,140 TO 200,140 TO 200,110 TO 245,110 TO 245,60 TO 235,60 TO 235,100 TO 180,100 TO 180,80 TO 140,80 TO 140,60 TO 120,60 TO 120,80 TO 100,80
  74. 2015  HPLOT 100,80 TO 100,40 TO 160,40 TO 160,60 TO 200,60 TO 200,80 TO 215,80 TO 215,40 TO 265,40 TO 265,130 TO 220,130 TO 220,158 TO 160,158
  75. 2020  HPLOT 220,158 TO 160,158 TO 160,140 TO 140,140 TO 140,158 TO 80,158 TO 80,120 TO 60,120 TO 60,100 TO 10,100
  76. 2030  HCOLOR= 3: HPLOT 106,66 TO 114,66 TO 114,74 TO 106,74 TO 106,66
  77. 2033  HPLOT 108,68 TO 112,72: HPLOT 108,72 TO 112,68: RETURN 
  78. 3000  POP : TEXT : FOR NN = 250 TO 0  STEP  -15: PRINT "** WINNER **";: POKE 780,NN: POKE 781,10
  79. 3005  CALL 782: NEXT NN: FOR N = 1 TO 500: NEXT N: PRINT : PRINT 
  80. 3010  IF TM >PT  THEN  HOME : VTAB 10: FLASH : PRINT "CONGRATULATIONS!": NORMAL : PRINT "YOU'VE BEATEN THE PREVIOUS HIGH SCORE ": PRINT "OF ";PT;" WITH YOUR SCORE OF ";TM
  81. 3011 GC = GC +1: IF GC = 1  THEN  PRINT : PRINT "IF YOU'VE BEEN PLAYING THE EASY GAME": PRINT "YOU'RE A WINNER!  NOW WE'LL ADVANCE TO": PRINT "THE HARD GAME":HD$ = "H"
  82. 3012  IF TM >PT  THEN PT = TM
  83. 3015  GOTO 4007
  84. 4000  POP : TEXT : FLASH : FOR NN = 1 TO 100: PRINT "** CRASH **";: NEXT NN: NORMAL 
  85. 4005  FOR NN = 1 TO 250  STEP 50: POKE 780,NN: POKE 781,50: CALL 782: NEXT NN
  86. 4006  FOR NN = 1 TO 2000: NEXT NN: CALL  -936
  87. 4007  INPUT "ANOTHER MISSION? HIT RETURN";A$: HGR : GOTO 40